//
//public class Main {
//    private static Set<Integer> set;
//    private static int b;
//    private static int maxValue;
//    private static Map<Integer, Integer> map;
//    public static void main(String[] args) {
//        Scanner in = new Scanner(System.in);
//        while (in.hasNext())
//        {
//            int a = in.nextInt();
//            b = in.nextInt();
//            int c = in.nextInt();
//            int arr[][] = new int[a][2];
//            map = new HashMap<>();
//            for (int i = 0; i < a; i++) {
//                arr[i][0] = in.nextInt();
//                arr[i][1] = in.nextInt();
//            }
//            for (int i = 0; i < c; i++) {
//                int key = in.nextInt();
//                int value = in.nextInt();
//                map.put(key, value);
//            }
//            set = new HashSet<>();
//            maxValue = 0;
//            dfs(arr, 0, 0, 0);
//            System.out.println(maxValue);
//        }
//    }
//    public static void  dfs(int arr[][], int index, int value, int weight) {
//        if (weight < b) {
//            if (maxValue < value) maxValue = value;
//        }
//        for (int i = index; i < arr.length; i++) {
//            if (set.contains(i + 1)) continue;
//            if (map.containsKey(i + 1)) set.add(map.get(i + 1));
//            weight += arr[i][0];
//            value += arr[i][1];
//            dfs(arr, i + 1, value, weight);
//            if (map.containsKey(i + 1)) set.remove(map.get(i + 1));
//            weight -= arr[i][0];
//            value -= arr[i][1];
//        }
//    }
//}